const joi = require('joi');
const validationMiddleware = require('../../middleware/validate');
const { dealNotEmpty } = require('../../utils/dberrordeal');
const CouponController = require('../../controllers/good/couponController');
const router = require('koa-router')();
router.prefix('/coupon');
const rulesSchema = {
    '/coupon/addcoupon': joi.object({
        name: dealNotEmpty('优惠券名称'),
        startDate:joi.number().integer().required().messages({
            'number.base':'开始时间必须是数字',
            'number.integer':'开始时间必须是整数',
            'any.required': '开始时间不能为空',
        }),
        endDate: joi.number().integer().required().messages({
            'number.base':'过期时间必须是数字',
            'number.integer':'过期时间必须是整数',
            'any.required': '过期时间不能为空',
        }),
        discountType: joi.string().valid('percentage', 'fixed').default('fixed').required().messages({
            'any.required': '折扣类型不能为空',
        }),
        //discountValue 非负数
        discountValue:joi.number().min(0).messages({
            'number.base':'折扣值必须是数字',
            'number.min':'折扣值必须大于等于0',
        }),
        minPurchase: joi.number().min(0).messages({
            'number.base':'最低购买金额必须是数字',
            'number.min':'最低购买金额必须大于等于0',
        }),
        limit: joi.number().integer().min(1).messages({
            'number.base':'使用次数限制必须是数字',
            'number.integer':'使用次数限制必须是整数',
            'number.min':'使用次数限制必须大于等于1',
        }),
    }),
    '/coupon/putcoupon': joi.object({
        id: dealNotEmpty('优惠券id'),
        name: dealNotEmpty('优惠券名称'),
        discountType: joi.string().valid('percentage', 'fixed').default('fixed').required().messages({
            'any.required': '折扣类型不能为空',
        }),
        discountValue:joi.number().min(0).messages({
            'number.base':'折扣值必须是数字',
            'number.min':'折扣值必须大于等于0',
        }),
        startDate:joi.number().integer().required().messages({
            'number.base':'开始时间必须是数字',
            'number.integer':'开始时间必须是整数',
            'any.required': '开始时间不能为空',
        }),
        endDate: joi.number().integer().required().messages({
            'number.base':'过期时间必须是数字',
            'number.integer':'过期时间必须是整数',
            'any.required': '过期时间不能为空',
        }),
        minPurchase: joi.number().min(0).messages({
            'number.base':'最低购买金额必须是数字',
            'number.min':'最低购买金额必须大于等于0',
        }),
        limit: joi.number().integer().min(1).messages({
            'number.base':'使用次数限制必须是数字',
            'number.integer':'使用次数限制必须是整数',
            'number.min':'使用次数限制必须大于等于1',
        }),
    }),
    '/coupon/getcoupon': joi.object({
        id: dealNotEmpty('优惠券id'),
    }),
    '/coupon/delcoupon': joi.object({
        id: dealNotEmpty('优惠券id'),
    }),
}
router.post('/addcoupon', validationMiddleware(rulesSchema), CouponController.createCoupon);
router.post('/putcoupon', validationMiddleware(rulesSchema), CouponController.updateCoupon);
router.post('/getcoupon', validationMiddleware(rulesSchema), CouponController.getCouponById);
router.post('/delcoupon', validationMiddleware(rulesSchema), CouponController.deleteCoupon);
router.post('/getcouponlist', CouponController.getCouponList);
module.exports = router;
